package cn.infrabase.core.util;

/**
 * 对象工具类。
 *
 * @author Weimin Gao
 * @since 1.0.0
 **/
public class ObjectUtils {

    /**
     * <pre>
     * 返回给定对象的类型。
     * 说明：
     * 1、如果给定的对象为Class类型则直接返回。
     * </pre>
     *
     * @param object 给定的对象。
     * @return 给定对象的类型。
     */
    public static Class<?> getClass(Object object) {
        if (object instanceof Class) {
            return (Class<?>) object;
        }
        return object.getClass();
    }

    /**
     * 返回给定对象对应类的全名（包含包名）。
     *
     * @param object 给定的对象。
     * @return 给定对象对应类的全名。
     */
    public static String getClassName(Object object) {
        return getClass(object).getName();
    }

    /**
     * 返回给定对象对应类的名称（不包含包名）。
     *
     * @param object 给定的对象。
     * @return 给定对象对应类的名称。
     */
    public static String getClassSimpleName(Object object) {
        return getClass(object).getSimpleName();
    }


//    /**
//     * <pre>
//     * 将给定的对象转为字符串。
//     * 说明：
//     *  1、如果给定的对象为null时转为"null"。
//     * </pre>
//     *
//     * @param object 给定的对象（Bean对象）。
//     * @return 给定的对象（Bean对象）所有字段转为Map后的字符串。
//     */
//    public static String toString(@Nullable Object object) {
//        if (null == object) {
//            return StringUtils.NULL;
//        }
//        if (object instanceof Map) {
//            return object.toString();
//        }
//        return ConvertUtils.toString(object);
//    }

}
